package digui;

public class _2汉诺塔 {
    public static void main(String[] args) {
        //将1-N从A柱移到B柱，C柱作为辅助
        /*
            等价于：
            1.把1 ~ N-1 移动到C（A为原柱，B为辅柱）
            2.把N移动到B
            3.把1 ~ N-1 移动到B A为辅柱，C为原柱）
         */
        printHanoiTower(3,"A","B","C");
    }

    /**
     *
     * @param N   初始移动盘子的个数,N是最大盘子数
     * @param from  原始柱子
     * @param to    目标柱子
     * @param help  辅助柱子
     */
    static void printHanoiTower(int N,String from,String to,String help){
        if (N == 1){
            System.out.println("move" + N + "from" + from + "to" + to);
            return;
        }
        printHanoiTower(N-1,from,help,to); // 把1 - N-1 移动到C（A为原柱，B为辅柱）
        System.out.println("move" + N + "from" + from + "to" + to);
        printHanoiTower(N-1,help,to,from);  // 让N-1从辅助空间回到原空间

    }
}
